问题:50人围成一圈,数3或3的倍数则出圈,问剩下的人是谁?在原来的位置是多少?
实现:
- 把数据填充到数组或链表。由于数组中元素不能自动向前移动,建议使用链表。链表每移除一位,数据会自动向前移一位(其实本质是链表删除一个元素,这个元素的前一个元素的指针会重新指到下一个元素)。
- 用一个while循环进行出圈,直到剩下一个元素。
- 注意如果使用下标0开始计算,则初始化时应使用-1,这样模拟元素已经少了一个。
1 | import java.util.LinkedList; |
输出:
1 | 2 50 |
问题:50人围成一圈,数3或3的倍数则出圈,问剩下的人是谁?在原来的位置是多少?
实现:
1 | import java.util.LinkedList; |
输出:
1 | 2 50 |